package br.com.arquitetura.servico;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import br.com.arquitetura.data.GenericDao;
import br.com.arquitetura.entidade.Persistente;
import br.com.arquitetura.excecoes.BDException;

/**
 * Processador padr�o deve ser estendido por todos os processadores criados. � o respons�vel por realizar a persist�ncia dos dados
 * em um ambiente transacional.
 * 
 * @author M�rio Melo
 *
 * @param <T>
 */
@Service
public class ServiceCadastro extends AbstractService{
	
	@Autowired
	@Qualifier("genericDao")
	protected GenericDao dao;
	
    /**
     * Incluir objeto no reposit�rio
     * @param objeto
     * @throws java.lang.Exception
     */
	@Transactional(readOnly=false)
    public void salvar(Persistente objeto) throws BDException{
    	dao.addEntity(objeto);
    }

    /**
     * Atualizar objeto do reposit�rio
     * @param objeto
     * @throws java.lang.Exception
     */
	@Transactional(readOnly=false)
	public void atualizar(Persistente objeto) throws BDException{
    	dao.updateEntity(objeto);
    }
    

    /**
     * Excluir objeto do reposit�rio
     * @param objeto
     * @throws java.lang.Exception
     */
	@Transactional(readOnly=false)
	public void excluir(Persistente objeto) throws BDException{		
		dao.removeEntity(objeto);		
    }

}
